package com.wanshu.sys.service;

import com.wanshu.sys.model.SysUserQueryDto;
import com.wanshu.common.util.PageUtils;
import com.wanshu.sys.entity.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wanshu.sys.model.res.roleMenuTree.UserRoleMenuRes;

import java.util.List;

/**
 * <p>
 * 系统用户 服务类
 * </p>
 *
 * @author 波哥
 * @since 2023-05-09
 */
public interface ISysUserService extends IService<SysUser> {

    /**
     * 根据用户名查询user集合
     *
     * @param username 用户名
     * @return {@link List }<{@link SysUser }>
     * @author 张颖辉（zyh）
     * @date 2023/06/28
     * @version 1.0.0
     */
    List<SysUser> queryByUserName(String username);

    /**
     * 分页查询系统用户
     *
     * @param sysUserQueryDto 系统用户查询dto
     * @return {@link PageUtils }<{@link SysUser }>
     * @author 张颖辉（zyh）
     * @date 2023/06/28
     * @version 1.0.0
     */
    PageUtils<SysUser> queryPage(SysUserQueryDto sysUserQueryDto);

    /**
     * 其他用户是否已经有重复的名称
     * 是否存在用户名称，但不是当前的用户
     *
     * @param sysUser 系统用户
     * @return {@link Boolean }
     * @author 张颖辉（zyh）
     * @date 2023/06/28
     * @version 1.0.0
     */
    Boolean existUserName(SysUser sysUser);

    /**
     * 保存用户
     *
     * @param sysUser 系统用户
     * @return {@link Boolean }
     * @author 张颖辉（zyh）
     * @date 2023/06/30
     * @version 1.0.0
     */
    void saveUser(SysUser sysUser);

    /**
     * 通过id查询用户
     *
     * @param userId 用户id
     * @return {@link SysUser }
     * @author 张颖辉（zyh）
     * @date 2023/06/30
     * @version 1.0.0
     */
    UserRoleMenuRes queryUserById(Long userId);
}
